Storage arrays typically require a number of operations to read from or write to the array. One example of a storage array employs static random access memory (SRAM), which uses a group of transistors to store data. The SRAM array includes bitlines connected from column drivers to the array columns and wordlines connected from row drivers to the array rows. Each bitline can include a number of individual lines, such as true and complement lines, as required for the particular transistor configuration. In operation, the SRAM array alternates between a precharge phase and an evaluate phase. The precharge phase prepares the array for the next read or write operation by driving bitlines to a precharge value, such as high. The evaluate phase can be a read or a write operation. The evaluate phase reads or writes data values, such as “ones” or “zeroes,” to storage cells in the array. The read and write operations also require a number of steps. A read operation drives the bitline to a precharge value, such as high, energizes a wordline so that the data value stored in the storage cell is readable on the bitline, and senses the stored data value on the bitline as a “zero” or a “one.” A write operation drives the bitline to the data value to be stored, and then energizes the wordline to store the data in the storage cell.
The present approach presents a two-fold problem regarding energy use. First, one of the bitline is charged unnecessarily when the precharge value would be read as the stored data value. In a read operation, both the true and complement lines are precharged to high. Either the true line or complement line discharges to low when the wordline is energized so the stored data value can be sensed. This wastes energy in unnecessarily recharging the true line or complement line after it is discharged to low when the precharge value would be read as the stored data value.
Second, the wordline is charged unnecessarily when the precharge value would be read or written as the stored data value. In a read operation, the wordline is energized to discharge the true line or complement line to low. This wastes energy when the precharge value would be read as the stored data value. For example, if the precharge value would be read as a “one” and a “one” is stored in the storage cell to be read, there is no need to energize the wordline when reading the storage cell. In a write operation, the true and complement lines are set to the values appropriate for the data value to be stored (high-low or low-high), so energy is wasted by energizing the wordline when the stored data value is the same as the value to be stored.
This two-fold problem is particularly apparent for uniform data words, i.e., data words in which the bits forming the data word are all “ones” or all “zeroes.” The power usage is often substantial because of the high capacitance of the bitlines and the number of bitlines. Wasting energy limits the operating time of portable devices powered by batteries. In addition, the high information density of new storage arrays causes problems in dissipating heat from the components, resulting in operational problems and reduced component reliability.
It would be desirable to have a system and method of selective row energization based on write data that would overcome the above disadvantages.